package com.suarte.core.dao;

import com.suarte.core.Company;
import com.suarte.core.Contact;
import com.suarte.core.Currency;
import com.suarte.core.DocumentStatus;
import com.suarte.core.Invoice;
import com.suarte.core.InvoicePayment;
import com.suarte.core.Payment;
import java.util.Date;
import org.appfuse.dao.GenericDao;

import java.util.List;

/**
 * @date   Feb 15, 2011
 * @author Ggutierrez
 */
public interface InvoiceDao extends GenericDao<Invoice, Long>  {

    public List<Invoice> findByDescription(String description);
    public void store(Invoice object);
    public Invoice get(Long id);
    public List<Invoice> findInvoices(Long id, Long quotationId, String description, Date date, Company company, Contact contact, DocumentStatus status, Date fromExpirationDate, Date toExpirationDate);
    public List<Invoice> findPendingInvoices(Company company, Currency currency);
    public List<InvoicePayment> findInvoiceByPayment(Payment payment);
}
